package com.yunpeng.aidevice.biz.service;

import com.yunpeng.aidevice.common.vo.FunctionNodeDetailVO;
import com.yunpeng.aidevice.common.vo.FunctionPermissionVO;
import com.yunpeng.common.dto.Result;

import java.util.List;

/**
 * IFunctionNodeBizService
 *
 * @author : Moore(hemw)
 * @date : 2020-04-15
 */
public interface IFunctionNodeBizService {
    /**
     * 新增功能节点
     *
     * @param name         功能名称
     * @param url          路径url
     * @param folder       是否文件夹
     * @param parentCode   父节点代码
     * @param operatorCode 操作人代码
     * @return
     */
    Result<Void> addNew(String name, String url, Boolean folder, String parentCode, String operatorCode);

    /**
     * 删除功能节点
     *
     * @param functionNodeCode 功能节点代码
     * @return
     */
    Result<Void> remove(String functionNodeCode);

    /**
     * 功能节点绑定权限
     *
     * @param nodeCode        功能节点代码
     * @param permissionCodes 权限代码集合
     * @param operatorCode    操作人代码
     * @return
     */
    Result<Void> bindPermission(String nodeCode, List<String> permissionCodes, String operatorCode);

    /**
     * 获取功能节点详情数据
     *
     * @param nodeCode 功能节点代码
     * @return
     */
    Result<FunctionNodeDetailVO> detailInfo(String nodeCode);

    /**
     * 返回树状的功能节点列表
     *
     * @return
     */
    Result<List<FunctionPermissionVO>> treeList();
}
